const path = require('path');
const fs = require('fs');

function resolve(dir) { // 别名方法
  return path.join(__dirname, dir);
}

module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        'views': '@/views',
        'components': '@/components'
      }
    }
  },
  chainWebpack: config => {

    // 配置打包入口
    config.when(process.env.NODE_ENV === 'production', config => {
      config.entry('app').clear().add('./src/main_prod.js')
      
      config.set('externals', { // 配置externals实现CDN加载从而减小打包体积
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        nprogress: 'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })

      // 判断是在开发环境还是生产环境从而修改标题和CDN标签
      config. plugin('html').tap(args => {
        args[0].isProd = false;
        return args;
      })

    })
    config.when(process.env.NODE_ENV === 'development', config => {
      config.entry('app').clear().add('./src/main_dev.js')
      
      // 判断是在开发环境还是生产环境从而修改标题和CDN标签
      config. plugin('html').tap(args => {
        args[0].isProd = true;
        return args;
      })
    })
    

    // 配置别名
    config.resolve.alias
      // src内部路径
      .set('@$', resolve('src'))
      // components内部路径
      .set('components', resolve('src/components'))
      // views路径
      .set('views', resolve('src/views'));

    // scss全局变量配置
    const oneOfsMap = config.module.rule('scss').oneOfs.store;
    oneOfsMap.forEach(item => {
    item
        .use('sass-resources-loader')
        .loader('sass-resources-loader')
        .options({
          // 全局变量资源路径
          resources: './src/assets/styles/variable.scss'
          // 也可以选择全局变量路径数组
          // resources: ['./path/to/vars.scss', './path/to/mixins.scss']
        })
        .end()
    })


  },
  publicPath: '',
    // 它支持webPack-dev-server的所有选项
  devServer: {
      host: "127.0.0.1", // 自己的当前的ip  127.0.0.1也行
      port: 7788, // 端口号
      https: false, // 是否启用https
      open: true, // 默认是否自动启动浏览器
      // 配置多个代理
      proxy: {
          "/api": {
          target: "http://127.0.0.1:8080/managementSystem_backEndSSM/", // 要访问的接口域名
          ws: true, 
          changeOrigin: true,
          pathRewrite: {
          "^/api": "" 
          }
        },
      }
    }

}